It is becoming more common for developers of computer programs to create a single combined application from multiple, separate computer programs. In general, a main computer program, called a host computer program, refers to and uses one or more other computer programs. These other computer programs, in some implementations, may include yet other computer programs. In some cases, an application can be built using components that are separate applications that are combined together when executed into what appears to be a single, combined application.
A computer program typically provides, when executed on a computer, a graphical user interface through which a user can interact with the computer while the computer is executing the computer program. When an application is built using components that are separate applications, the graphical user interface for the combined application is a combination of the graphical user interfaces generated by a host component and by the other components which are used and referenced by the host component. This combination can be performed by an operating system service at the direction of the host component.
There also has been a trend in developing operating systems that require computer programs to execute more securely. In particular, an operating system can require applications to be one or more components, where each component executes as an application, with one or more processes, but which is separate and independent from other applications, and thus other components. Such segregation of the execution of components into separate applications can be provided for several reasons, such as to reduce the ability of a first component to affect operation of a second component.
There are several technical problems to solve in an operating system that executes components of a combined application as separate applications. Some of the technical problems to be solved relate to providing an intuitive user experience. One part of providing an intuitive experience is providing proper handling of non-spatial input events from input devices, e.g., by directing the input events to the right component of the combined application at the right time.